common.skill

কন্ট্রোলার এবং একশন (Controllers and Actions)

Microsoft Technologies - ডট নেট কোর (Dot.Net Core)
199
199

ASP.NET Core MVC অ্যাপ্লিকেশন তৈরি করার সময়, কন্ট্রোলার এবং একশন (Action) অত্যন্ত গুরুত্বপূর্ণ উপাদান। কন্ট্রোলার হল একটি ক্লাস যা ইউজারের রিকোয়েস্টের জন্য উপযুক্ত একশন মেথডগুলো পরিচালনা করে। প্রতিটি একশন মেথড নির্দিষ্ট কাজ সম্পাদন করে এবং রিকোয়েস্টের ফলাফল রিটার্ন করে।


কন্ট্রোলার (Controller)

কন্ট্রোলার একটি ক্লাস যা ControllerBase অথবা Controller ক্লাস থেকে উত্তরাধিকারসূত্রে পাওয়া যায়। কন্ট্রোলারের কাজ হল, ইউজারের HTTP রিকোয়েস্ট গ্রহণ করা, সেগুলোর প্রক্রিয়া করা এবং উপযুক্ত ভিউ অথবা ডেটা রিটার্ন করা।

কন্ট্রোলারের ভূমিকা

  • রিকোয়েস্ট রিসিভ করা এবং প্রক্রিয়া করা।
  • ডেটাবেস থেকে ডেটা নিয়ে আসা অথবা অন্য সার্ভিস থেকে ডেটা সংগ্রহ করা।
  • প্রক্রিয়াজাত ডেটা ভিউ (View) অথবা API রেসপন্স হিসেবে রিটার্ন করা।

একটি কন্ট্রোলারের সাধারণ গঠন হতে পারে এইরকম:

using Microsoft.AspNetCore.Mvc;

namespace MyApp.Controllers
{
    public class HomeController : Controller
    {
        public IActionResult Index()
        {
            return View();  // View রিটার্ন করা
        }
    }
}

এখানে HomeController হল কন্ট্রোলার এবং Index হল একশন মেথড।


একশন মেথড (Action Methods)

একশন মেথড একটি পাবলিক মেথড যা কন্ট্রোলারের মধ্যে থাকে। এটি HTTP রিকোয়েস্ট গ্রহণ করে এবং রিকোয়েস্টের ভিত্তিতে একটি রেসপন্স তৈরি করে। একশন মেথডগুলো সাধারণত IActionResult টাইপ রিটার্ন করে, যা বিভিন্ন ধরনের রেসপন্স (যেমন ভিউ, ডেটা, রিডিরেক্ট, বা স্ট্যাটাস কোড) ফেরত দিতে পারে।

একশন মেথডের ধরন:

  • IActionResult: সাধারণ রিটার্ন টাইপ, যা অনেক ধরনের রেসপন্স ফেরত দিতে পারে, যেমন View(), Redirect(), Json() ইত্যাদি।
  • ActionResult: যদি আপনি ডেটা ফেরত দিতে চান, তাহলে এটি ব্যবহার করতে পারেন, যেমন JSON বা ডাটাবেস থেকে রিটার্ন করা।

একটি সাধারণ একশন মেথড উদাহরণ:

public IActionResult About()
{
    return View();  // 'About' ভিউ রিটার্ন করা
}

এখানে About হল একটি একশন মেথড যা ইউজারের রিকোয়েস্টের পর View() রিটার্ন করে।


JSON রেসপন্স এবং API কন্ট্রোলার

যখন আপনি ওয়েব API তৈরি করেন, তখন একশন মেথডের মাধ্যমে আপনি সাধারণত JSON রেসপন্স পাঠাবেন। একশন মেথডে JsonResult বা Ok() ব্যবহার করে JSON ডেটা ফেরত দেওয়া হয়।

উদাহরণ:

[ApiController]
[Route("api/[controller]")]
public class ProductController : ControllerBase
{
    [HttpGet]
    public IActionResult GetAllProducts()
    {
        var products = new List<string> { "Product1", "Product2", "Product3" };
        return Ok(products);  // JSON রেসপন্স রিটার্ন করা
    }
}

এখানে ProductController একটি API কন্ট্রোলার, এবং GetAllProducts() একশন মেথড JSON আকারে ডেটা রিটার্ন করছে।


একশন মেথডের রিটার্ন টাইপ

ASP.NET Core MVC এ একশন মেথডের বেশ কিছু রিটার্ন টাইপ রয়েছে, যেমন:

  • ViewResult: ভিউ রিটার্ন করার জন্য ব্যবহৃত হয়। এটি ভিউ (HTML পেজ) রিটার্ন করে।

    return View();
    
  • JsonResult: JSON রিটার্ন করার জন্য ব্যবহৃত হয়। এটি API কন্ট্রোলার বা AJAX রিকোয়েস্টের জন্য উপযুক্ত।

    return Json(new { name = "John", age = 30 });
    
  • RedirectResult: ইউজারকে অন্য কোনো URL এ রিডিরেক্ট করার জন্য ব্যবহৃত হয়।

    return RedirectToAction("Index");
    
  • PartialViewResult: একটি পার্শিয়াল ভিউ রিটার্ন করার জন্য ব্যবহৃত হয়।

    return PartialView("_MyPartialView");
    
  • ContentResult: সরাসরি কন্টেন্ট (যেমন টেক্সট বা HTML) রিটার্ন করার জন্য ব্যবহৃত হয়।

    return Content("Hello, World!");
    

একশন মেথডের রুটিং (Routing)

একশন মেথড রাউটিং কন্ট্রোলারের সাথে যুক্ত থাকে। ASP.NET Core এ রাউটিং স্বয়ংক্রিয়ভাবে কন্ট্রোলার এবং একশন মেথডের নাম অনুযায়ী কাজ করে। উদাহরণস্বরূপ, যদি HomeController এর মধ্যে Index() একশন মেথড থাকে, তবে http://localhost:5000/Home/Index URLটি সেই মেথডে চলে যাবে।

কিন্তু আপনি কাস্টম রাউটিংও ব্যবহার করতে পারেন:

[Route("home/welcome/{name}")]
public IActionResult Welcome(string name)
{
    return Content($"Welcome {name}");
}

এখানে home/welcome/{name} URL রাউটটি কন্ট্রোলারের Welcome একশন মেথডে নির্দেশিত করবে।


সারাংশ

ASP.NET Core MVC অ্যাপ্লিকেশনে কন্ট্রোলার এবং একশন মেথড অত্যন্ত গুরুত্বপূর্ণ ভূমিকা পালন করে। কন্ট্রোলার ইউজারের রিকোয়েস্ট রিসিভ করে এবং একশন মেথডের মাধ্যমে রেসপন্স রিটার্ন করে। একশন মেথড বিভিন্ন ধরনের রেসপন্স (ভিউ, JSON, রিডিরেক্ট ইত্যাদি) রিটার্ন করতে পারে এবং রাউটিংয়ের মাধ্যমে নির্দিষ্ট URL গুলোকে কন্ট্রোলার এবং একশন মেথডের সাথে সংযুক্ত করে। এই উপাদানগুলো আপনাকে ASP.NET Core অ্যাপ্লিকেশন ডিজাইন করতে সহায়তা করবে।

common.content_added_by

Controllers এর ভূমিকা

222
222

ASP.NET Core অ্যাপ্লিকেশনে Controllers হলো এমন একটি মৌলিক অংশ যা Model-View-Controller (MVC) আর্কিটেকচারে ব্যবহৃত হয়। এটি অ্যাপ্লিকেশনের ব্যবসায়িক লজিক (Business Logic) পরিচালনা করে এবং ভিউ (View) এবং মডেল (Model) এর মধ্যে যোগাযোগ স্থাপন করে। Controller কেবলমাত্র ক্লায়েন্টের অনুরোধ গ্রহণ (Request) করে এবং সেই অনুযায়ী সঠিক রেসপন্স (Response) তৈরি করে।


Controllers এর মূল কাজ


অনুরোধের প্রসেসিং (Request Processing)
Controller মূলত ওয়েব অ্যাপ্লিকেশনের রিকোয়েস্ট গ্রহণ করে এবং তা প্রক্রিয়া করে। ইউজার যখন কোনো রিকোয়েস্ট পাঠায়, Controller সেই রিকোয়েস্টে আনা তথ্য ধরে নিয়ে অ্যাপ্লিকেশন লজিক বা ডেটাবেসের সাথে যোগাযোগ করতে পারে, এরপর সঠিক রেসপন্স প্রদান করে।

অ্যাকশন মেথড (Action Methods)
Controller সাধারণত এক বা একাধিক Action Methods ধারণ করে, যেগুলি রিকোয়েস্টের ভিত্তিতে নির্দিষ্ট কাজ সম্পাদন করে। প্রতিটি অ্যাকশন মেথড সাধারণত একটি নির্দিষ্ট HTTP রিকোয়েস্টের জন্য যেমন GET, POST, PUT, DELETE ইত্যাদি এর মাধ্যমে কার্যকর হয়।

উদাহরণস্বরূপ, যদি আপনি /home/index URL-এ যান, তবে Index অ্যাকশন মেথডটি সাধারণত সেই রিকোয়েস্টটি প্রক্রিয়া করবে এবং সংশ্লিষ্ট ভিউ বা ডেটা রিটার্ন করবে।

ডেটা ম্যানিপুলেশন এবং রেসপন্স প্রদান (Data Manipulation and Response)
Controller ডেটাবেসের সাথে যোগাযোগ করতে পারে এবং Model-এর সাহায্যে ডেটা ম্যানিপুলেট করতে পারে। এতে অ্যাকশন মেথড ডেটা নিয়ে ভিউ বা API রেসপন্স পাঠাতে পারে। এতে Model Binding এর মাধ্যমে ফর্ম ডেটা প্রক্রিয়া করা হয় এবং Model Validation এর মাধ্যমে ইনপুট ভ্যালিডেশন পরিচালনা করা হয়।

বিজনেস লজিক (Business Logic)
Controller এ বিজনেস লজিক রাখা হয়ে থাকে যা মডেল এবং ভিউয়ের মধ্যকার লিঙ্ক তৈরি করে। উদাহরণস্বরূপ, একজন ইউজারের লগইন চেক করা, শপিং কার্টের সামগ্রী আপডেট করা বা অর্থনৈতিক হিসাব করা এগুলি Controller-এ করা হয়।

রিডাইরেকশন এবং রাউটিং (Redirection and Routing)
Controller রিকোয়েস্ট প্রক্রিয়া করার পর, রিকোয়েস্টের ধরণ অনুযায়ী রিডাইরেকশন (Redirect) বা রাউটিং (Routing) করতে পারে। যেমন, ইউজার সফলভাবে লগইন করলে তাকে ড্যাশবোর্ডে রিডাইরেক্ট করা হতে পারে অথবা ডেটা সেভ করার পর ভিন্ন একটি পৃষ্ঠায় প্রেরণ করা হতে পারে।


Controllers এর ফিচার


1. Action Filters
Controller অ্যাকশনগুলোর উপর বিভিন্ন ফিল্টার প্রয়োগ করা যায়। এসব ফিল্টারগুলি রিকোয়েস্ট বা রেসপন্স প্রসেসের আগে, পরে বা এমনকি একটিভ করার আগেও প্রক্রিয়া চালাতে পারে। যেমন, Authorization Filter ব্যবহার করে শুধুমাত্র অনুমোদিত ইউজারদেরকে অ্যাকশন এক্সেস করার অনুমতি দেয়া হয়।

2. Dependency Injection (DI)
ASP.NET Core Controller-এ Dependency Injection ব্যবহার করে একাধিক সার্ভিস ইনজেক্ট করা যায়। যেমন, ডাটাবেস সার্ভিস বা রেপোজিটরি ক্লাস, যা অ্যাকশন মেথডগুলিতে ডেটা পরিচালনা করতে সহায়তা করে।

3. ViewResult এবং JSONResult
Controller অ্যাকশন মেথডের মাধ্যমে ViewResult বা JSONResult রিটার্ন করতে পারে। ViewResult সাধারণত HTML রেসপন্স তৈরি করে, যা ভিউতে প্রদর্শিত হয়, আর JSONResult JSON ডাটা রিটার্ন করে, যা API রেসপন্স হিসেবে ব্যবহার হয়।


Controllers এর উদাহরণ


public class HomeController : Controller
{
    // GET: /Home/Index
    public IActionResult Index()
    {
        var message = "Welcome to ASP.NET Core!";
        return View("Index", message);
    }

    // POST: /Home/Submit
    [HttpPost]
    public IActionResult Submit(string data)
    {
        // ডেটা প্রক্রিয়া এবং প্রাসঙ্গিক লজিক
        return RedirectToAction("Index");
    }
}

উপরের কোডে, HomeController দুটি অ্যাকশন মেথড ধারণ করে:

  • Index (GET রিকোয়েস্ট) যা একটি বার্তা সহ ভিউ রিটার্ন করে।
  • Submit (POST রিকোয়েস্ট) যা ফর্ম ডেটা প্রক্রিয়া করে এবং তারপর ব্যবহারকারীকে "Index" পৃষ্ঠায় রিডাইরেক্ট করে।

সারাংশ


Controller হল ASP.NET Core অ্যাপ্লিকেশনের মূল অংশ যা রিকোয়েস্ট প্রক্রিয়া, বিজনেস লজিক এবং ডেটাবেস ম্যানিপুলেশন পরিচালনা করে। এর মাধ্যমে মডেল, ভিউ এবং একশন মেথডের মধ্যে সঠিক সমন্বয় প্রতিষ্ঠিত হয়, যা ব্যবহারকারীর রিকোয়েস্ট অনুযায়ী সঠিক রেসপন্স প্রদান করে। এটি অ্যাপ্লিকেশনের কার্যকারিতা এবং কার্যকরী অভিজ্ঞতা উন্নত করতে সহায়ক।

common.content_added_by

Action Methods এবং Return Types

250
250

Action Methods হল ASP.NET Core MVC কন্ট্রোলারের মেথড, যেগুলি ব্যবহারকারীর রিকোয়েস্ট গ্রহণ করে এবং সঠিক রেসপন্স প্রদান করে। এই মেথডগুলির মাধ্যমে ব্যবহারকারীর ইনপুট প্রক্রিয়া করা হয় এবং সেগুলোর জন্য ভিউ বা অন্য কোনো রেসপন্স তৈরি করা হয়।


Action Method কী?


Action Method হল একটি পাবলিক মেথড যা ASP.NET Core MVC কন্ট্রোলারের অংশ এবং এটি HTTP রিকোয়েস্ট প্রক্রিয়া করতে ব্যবহৃত হয়। প্রতিটি Action Method এক বা একাধিক HTTP রিকোয়েস্টকে হ্যান্ডেল করে, যেমন GET, POST, PUT, DELETE ইত্যাদি। সাধারণত, কন্ট্রোলার ক্লাসে একাধিক Action Method থাকতে পারে, যা বিভিন্ন রিকোয়েস্ট টাইপ এবং রাউট পাথ অনুযায়ী কাজ করে।


Action Method এর কাজের ধারা

  1. ব্যবহারকারী HTTP রিকোয়েস্ট পাঠায়: এটি সাধারণত ওয়েব ব্রাউজার, API কনজিউমার, বা অন্য কোনো ক্লায়েন্ট হতে পারে।
  2. কন্ট্রোলার সেই রিকোয়েস্টের জন্য Action Method কল করে: কন্ট্রোলার রিকোয়েস্ট অনুযায়ী সঠিক Action Method নির্বাচন করে।
  3. Action Method ব্যবসায়িক লজিক প্রক্রিয়া করে: এটি মডেল থেকে ডেটা নিয়ে আসে এবং তা প্রক্রিয়া করে।
  4. Action Method একটি রেসপন্স রিটার্ন করে: এটি সাধারণত ভিউ বা JSON/XML আউটপুট হতে পারে, যা ব্যবহারকারীকে দেখানো হয়।

Return Types (রিটার্ন টাইপ)


Action Methods বিভিন্ন ধরনের রিটার্ন টাইপ রিটার্ন করতে পারে। নিচে সাধারণ কিছু রিটার্ন টাইপের উদাহরণ দেওয়া হলো:

1. ViewResult

ViewResult একটি Action Method থেকে সাধারণত ব্যবহার করা হয় যখন আপনি HTML পেজ (ভিউ) ব্যবহারকারীকে প্রদর্শন করতে চান। View() মেথডের মাধ্যমে একটি ভিউ রিটার্ন করা হয়।

উদাহরণ:

public ViewResult Index()
{
    return View();
}

এখানে, View() মেথড ভিউ ফাইল রিটার্ন করে, যা Views ফোল্ডারের মধ্যে থাকে।

2. ActionResult

ActionResult একটি সাধারণ রিটার্ন টাইপ যা বিভিন্ন ধরনের রিটার্ন টাইপের জন্য বেস ক্লাস হিসেবে কাজ করে। এটি ViewResult, JsonResult, RedirectResult ইত্যাদি সহ বিভিন্ন রিটার্ন টাইপকে ধারণ করতে পারে। এটা বেশ উপযোগী যখন আপনি একই Action Method থেকে বিভিন্ন ধরনের রেসপন্স রিটার্ন করতে চান।

উদাহরণ:

public ActionResult Index()
{
    return View(); // ViewResult হিসেবে ভিউ রিটার্ন করবে।
}

3. JsonResult

JsonResult ব্যবহৃত হয় যখন অ্যাপ্লিকেশন JSON ডেটা রিটার্ন করতে চায়, যেমন ওয়েব API থেকে। এটি সাধারণত অ্যাজাক্স রিকোয়েস্ট বা API রেসপন্সের ক্ষেত্রে ব্যবহৃত হয়।

উদাহরণ:

public JsonResult GetDetails()
{
    var data = new { Name = "John", Age = 30 };
    return Json(data); // JSON আউটপুট রিটার্ন করবে।
}

4. RedirectToActionResult

RedirectToActionResult ব্যবহার করা হয় এক অ্যাকশন থেকে অন্য অ্যাকশনে রিডিরেক্ট করার জন্য। এটি সাধারণত ব্যবহার হয় যখন একটি নির্দিষ্ট কাজ সম্পন্ন হওয়ার পর অন্য কোনো পেজে রিডিরেক্ট করতে হয়।

উদাহরণ:

public RedirectToActionResult RedirectToHome()
{
    return RedirectToAction("Index", "Home");
}

5. RedirectResult

RedirectResult সাধারণত অন্য URL এ রিডিরেক্ট করার জন্য ব্যবহৃত হয়, যেমন একটি সাইটের বাহিরে বা অন্য পেজে। এটি Redirect() মেথডের মাধ্যমে ব্যবহৃত হয়।

উদাহরণ:

public RedirectResult RedirectToGoogle()
{
    return Redirect("https://www.google.com");
}

6. ContentResult

ContentResult সাধারণত কাঁচা টেক্সট বা HTML কনটেন্ট রিটার্ন করার জন্য ব্যবহৃত হয়। এটি সরাসরি কন্টেন্ট প্রদর্শন করতে সাহায্য করে।

উদাহরণ:

public ContentResult ShowMessage()
{
    return Content("Hello, World!"); // টেক্সট রিটার্ন করবে।
}

7. FileResult

FileResult ব্যবহৃত হয় ফাইল রিটার্ন করার জন্য। এটি বিশেষভাবে ফাইল ডাউনলোড বা ফাইল প্রদর্শন করতে কাজে আসে।

উদাহরণ:

public FileResult DownloadFile()
{
    byte[] fileBytes = System.IO.File.ReadAllBytes("path/to/file");
    return File(fileBytes, "application/pdf", "downloadedfile.pdf");
}

Action Methods এর রাউটিং এবং HTTP মেথড


ASP.NET Core এ Action Methods বিভিন্ন HTTP মেথডের জন্য ডিজাইন করা যেতে পারে:

  • GET: তথ্য প্রাপ্তির জন্য ব্যবহৃত হয়। সাধারণত ভিউ রিটার্ন বা ডেটা শো করার জন্য।
  • POST: নতুন ডেটা প্রেরণ বা সংরক্ষণ করার জন্য ব্যবহৃত হয়।
  • PUT: বিদ্যমান ডেটা আপডেট করার জন্য ব্যবহৃত হয়।
  • DELETE: ডেটা মুছে ফেলার জন্য ব্যবহৃত হয়।

এছাড়া, কন্ট্রোলার অ্যাকশন মেথডের সাথে HttpGet, HttpPost, HttpPut, HttpDelete অ্যাট্রিবিউট ব্যবহার করা যেতে পারে, যা নির্দিষ্ট HTTP মেথডে রিকোয়েস্ট গ্রহণ করতে সাহায্য করে।


সারাংশ


ASP.NET Core MVC কন্ট্রোলারে Action Methods ব্যবহারকারীর রিকোয়েস্টের ভিত্তিতে সঠিক রেসপন্স প্রদান করে। Action Methods বিভিন্ন ধরনের রিটার্ন টাইপ ব্যবহার করে, যেমন ViewResult, JsonResult, RedirectResult, ইত্যাদি। এগুলি বিভিন্ন প্রয়োজনে ব্যবহার করা হয় যেমন HTML পেজ রিটার্ন, JSON ডেটা প্রদান, রিডিরেক্ট করা, অথবা কাঁচা টেক্সট বা ফাইল রিটার্ন করা। Action Methods ব্যবহারের মাধ্যমে অ্যাপ্লিকেশনটি আরও ডাইনামিক এবং কার্যকরী হয়ে ওঠে।

common.content_added_by

JSON রেসপন্স এবং API কন্ট্রোলার

203
203

API (Application Programming Interface) ডেভেলপমেন্টে JSON (JavaScript Object Notation) একটি জনপ্রিয় ডাটা ফরম্যাট হিসেবে ব্যবহৃত হয়। JSON হল একটি হালকা ওয়েট ডাটা ফরম্যাট যা সহজে পাঠযোগ্য এবং প্রক্রিয়া করা যায়, এবং এটি ওয়েব অ্যাপ্লিকেশন, মোবাইল অ্যাপ্লিকেশন এবং অন্যান্য সিস্টেমের মধ্যে ডাটা আদান-প্রদান করতে ব্যবহৃত হয়। ASP.Net Core তে API কন্ট্রোলার তৈরি করা এবং JSON রেসপন্স তৈরি করার প্রক্রিয়া খুবই সোজা এবং সুবিধাজনক।


API কন্ট্রোলার কী?

ASP.Net Core তে API কন্ট্রোলার হলো এমন একটি কন্ট্রোলার ক্লাস যা HTTP রিকোয়েস্টগুলো প্রসেস করে এবং সেগুলোর জন্য HTTP রেসপন্স প্রদান করে। API কন্ট্রোলার সাধারণত Web API এপ্লিকেশন তৈরি করতে ব্যবহৃত হয় এবং এটি JSON বা XML ফরম্যাটে ডাটা রিটার্ন করে।

ASP.Net Core তে API কন্ট্রোলার তৈরি করার জন্য ControllerBase ক্লাসটি ইনহেরিট করা হয়, যা কন্ট্রোলার এর ফাংশনালিটি সহজভাবে পরিচালনা করতে সহায়তা করে।

API কন্ট্রোলার তৈরি

ASP.Net Core তে একটি API কন্ট্রোলার তৈরির জন্য নিম্নলিখিত ধাপগুলো অনুসরণ করা হয়:

  1. কন্ট্রোলার ক্লাস তৈরি
    কন্ট্রোলার ক্লাস তৈরি করার জন্য ControllerBase ক্লাস ইনহেরিট করা হয়, এবং [Route] অ্যাট্রিবিউট দিয়ে রাউটিং কনফিগার করা হয়।

    [ApiController]
    [Route("api/[controller]")]
    public class ProductsController : ControllerBase
    {
        // GET: api/products
        [HttpGet]
        public IActionResult GetProducts()
        {
            var products = new List<string> { "Product1", "Product2", "Product3" };
            return Ok(products);  // JSON রেসপন্স
        }
    }
    
  2. API রাউটিং কনফিগার করা
    API কন্ট্রোলার কনফিগার করার সময়, Route অ্যাট্রিবিউট ব্যবহার করে URL পাথ নির্ধারণ করা হয়। উদাহরণস্বরূপ, api/products রাউটের জন্য কন্ট্রোলার তৈরি করা হয়েছে।

JSON রেসপন্স

ASP.Net Core তে API কন্ট্রোলার দ্বারা JSON রেসপন্স রিটার্ন করা খুবই সহজ। রিটার্ন টাইপ হিসেবে IActionResult বা ActionResult<T> ব্যবহার করা হয় এবং এর মধ্যে Ok() মেথড ব্যবহার করে JSON রেসপন্স পাঠানো হয়।

JSON রেসপন্স প্রদান করার উদাহরণ:

[HttpGet]
public IActionResult GetProduct(int id)
{
    var product = new { Id = id, Name = "Product1", Price = 100 };
    return Ok(product);  // এটি JSON রেসপন্স হিসেবে রিটার্ন হবে
}

উপরের উদাহরণে, Ok() মেথড JSON ডাটা রিটার্ন করবে, যা ক্লায়েন্ট সাইডে JSON ফরম্যাটে প্রদর্শিত হবে। এই JSON ডাটা কিছু এরকম হবে:

{
  "Id": 1,
  "Name": "Product1",
  "Price": 100
}

JSON রেসপন্সের অন্যান্য ভ্যালিড রিটার্ন টাইপস:

  • BadRequest: যদি রিকোয়েস্টে কোন ভুল থাকে বা ইনপুট ভ্যালিড না হয়, তাহলে BadRequest() ব্যবহার করা হয়।

    [HttpPost]
    public IActionResult CreateProduct(Product product)
    {
        if (product == null)
        {
            return BadRequest("Product data is required.");
        }
        return Ok(product);
    }
    
  • NotFound: যদি কোনো ডাটা না পাওয়া যায়, তাহলে NotFound() রিটার্ন করা হয়।

    [HttpGet("{id}")]
    public IActionResult GetProductById(int id)
    {
        var product = _context.Products.FirstOrDefault(p => p.Id == id);
        if (product == null)
        {
            return NotFound();
        }
        return Ok(product);
    }
    
  • Created: নতুন রিসোর্স তৈরি করা হলে, Created() মেথড ব্যবহার করে সফল রেসপন্স পাঠানো হয়।

    [HttpPost]
    public IActionResult CreateProduct(Product product)
    {
        _context.Products.Add(product);
        _context.SaveChanges();
        return CreatedAtAction(nameof(GetProductById), new { id = product.Id }, product);
    }
    

Action Methods এবং Return Types

ASP.Net Core API কন্ট্রোলারে একাধিক Action মেথড থাকতে পারে, এবং প্রতিটি মেথড বিভিন্ন HTTP রিকোয়েস্ট (GET, POST, PUT, DELETE) এর জন্য নির্দিষ্ট কাজ করে। প্রতিটি একশন মেথড IActionResult বা ActionResult<T> রিটার্ন করে এবং সেই অনুযায়ী JSON রেসপন্স প্রদান করে।

GET Request: সাধারণত ডাটা প্রাপ্তির জন্য ব্যবহৃত হয়।

[HttpGet]
public IActionResult GetAllProducts()
{
    var products = _context.Products.ToList();
    return Ok(products);
}

POST Request: নতুন ডাটা পাঠানোর জন্য ব্যবহৃত হয়।

[HttpPost]
public IActionResult CreateProduct(Product product)
{
    _context.Products.Add(product);
    _context.SaveChanges();
    return CreatedAtAction(nameof(GetProductById), new { id = product.Id }, product);
}

PUT Request: বিদ্যমান ডাটা আপডেট করার জন্য ব্যবহৃত হয়।

[HttpPut("{id}")]
public IActionResult UpdateProduct(int id, Product product)
{
    if (id != product.Id)
    {
        return BadRequest();
    }
    _context.Entry(product).State = EntityState.Modified;
    _context.SaveChanges();
    return NoContent(); // No Content response
}

DELETE Request: ডাটা মুছে ফেলার জন্য ব্যবহৃত হয়।

[HttpDelete("{id}")]
public IActionResult DeleteProduct(int id)
{
    var product = _context.Products.Find(id);
    if (product == null)
    {
        return NotFound();
    }
    _context.Products.Remove(product);
    _context.SaveChanges();
    return NoContent();
}

সারাংশ

ASP.Net Core API কন্ট্রোলার তৈরি করা এবং JSON রেসপন্স প্রদান করা অত্যন্ত সহজ এবং নমনীয়। ডেভেলপাররা সহজেই বিভিন্ন HTTP মেথড (GET, POST, PUT, DELETE) ব্যবহার করে ডাটা প্রক্রিয়া করতে এবং JSON ফরম্যাটে ক্লায়েন্টকে রেসপন্স পাঠাতে পারেন। এই রেসপন্স ডাটা আধুনিক ওয়েব অ্যাপ্লিকেশন ও মোবাইল অ্যাপ্লিকেশনগুলোর জন্য অত্যন্ত উপযোগী এবং ফাস্ট ডাটা ট্রান্সফার নিশ্চিত করে।

common.content_added_by

Dependency Injection ব্যবহার করে Services Inject করা

224
224

Dependency Injection (DI) একটি ডিজাইন প্যাটার্ন যা অ্যাপ্লিকেশনের বিভিন্ন অংশের মধ্যে ডিপেনডেন্সি বা নির্ভরশীলতা হ্যান্ডল করতে ব্যবহৃত হয়। এর মাধ্যমে, অ্যাপ্লিকেশন কম্পোনেন্টগুলোর মধ্যে স্বতন্ত্রতা বা loosely coupled সম্পর্ক স্থাপন করা যায়। DI এর মাধ্যমে আমরা একটি ক্লাসের মধ্যে নির্ভরশীল অবজেক্টগুলো সরাসরি তৈরি না করে, সেগুলো বাইরের কোনও সোর্স (যেমন DI কন্টেইনার) থেকে ইনজেক্ট করতে পারি।

DI এর মূল উদ্দেশ্য হল, কোডের রক্ষণাবেক্ষণ এবং টেস্টিংকে সহজ করা, কারণ এর মাধ্যমে কোডের বিভিন্ন অংশ একে অপরের সাথে কম যোগাযোগ রাখে।


ASP.NET Core-এ Dependency Injection ব্যবহার


ASP.NET Core DI কে প্রথম থেকেই বিল্ট-ইন সাপোর্ট প্রদান করে, তাই আপনাকে বাইরের কোনো লাইব্রেরি বা ফ্রেমওয়ার্ক ব্যবহার করার দরকার নেই। এটি অ্যাপ্লিকেশন স্টার্টআপে কনফিগার করা হয় এবং নির্দিষ্ট সার্ভিসের জন্য ডিপেনডেন্সি ইনজেকশন সেট করা হয়। DI সার্ভিসটি কনফিগার করার জন্য অ্যাপ্লিকেশন এর Startup.cs ফাইলে সেটআপ করা হয়।

ASP.NET Core অ্যাপ্লিকেশন তৈরি করার সময় DI কনটেইনারটি একটি সার্ভিস রেজিস্ট্রেশন পদ্ধতি প্রদান করে, যেখানে আপনি বিভিন্ন সার্ভিস (যেমন ট্রান্সিয়েন্ট, সিঙ্গলটন, স্কোপড) রেজিস্টার করতে পারেন। এগুলি পরবর্তীতে ইনজেক্ট হয়ে চলতে থাকে।


DI কনফিগারেশন এবং সার্ভিস ইনজেকশন


সার্ভিস রেজিস্ট্রেশন
Startup.cs ফাইলে ConfigureServices মেথডে সার্ভিস রেজিস্টার করা হয়। এখানে আপনি সার্ভিসগুলিকে বিভিন্ন লাইফটাইম (Transients, Scoped, Singleton) এর মধ্যে রেজিস্টার করতে পারেন।

  1. Transients: প্রতি রিকোয়েস্টে নতুন অবজেক্ট তৈরি হয়।
  2. Scoped: রিকোয়েস্টের লাইফটাইমের মধ্যে একবার অবজেক্ট তৈরি হয়।
  3. Singleton: অ্যাপ্লিকেশন চলাকালীন একবার অবজেক্ট তৈরি হয়।

Service Registration উদাহরণ:

public void ConfigureServices(IServiceCollection services)
{
    // Singleton সার্ভিস রেজিস্ট্রেশন
    services.AddSingleton<IMyService, MyService>();

    // Scoped সার্ভিস রেজিস্ট্রেশন
    services.AddScoped<IOrderService, OrderService>();

    // Transient সার্ভিস রেজিস্ট্রেশন
    services.AddTransient<IProductService, ProductService>();
}

এখানে IMyService একটি ইন্টারফেস এবং MyService তার ইমপ্লিমেন্টেশন। AddSingleton, AddScoped, AddTransient মেথডগুলো সার্ভিসের বিভিন্ন লাইফটাইম রেজিস্টার করতে ব্যবহৃত হয়।


সার্ভিস ইনজেকশন

একবার সার্ভিস রেজিস্টার করার পর, ASP.NET Core আপনাকে স্বয়ংক্রিয়ভাবে সেগুলো ইনজেক্ট করতে সাহায্য করে। সার্ভিস ইনজেক্ট করার জন্য, কনট্রোলার বা ক্লাসের কনস্ট্রাকটরে সরাসরি সার্ভিসটি ইনজেক্ট করা হয়।

কনট্রোলারে সার্ভিস ইনজেকশন উদাহরণ:

public class HomeController : Controller
{
    private readonly IMyService _myService;

    // কনস্ট্রাকটরে DI ব্যবহার
    public HomeController(IMyService myService)
    {
        _myService = myService;
    }

    public IActionResult Index()
    {
        var result = _myService.GetData();
        return View(result);
    }
}

এখানে HomeController-এ IMyService ইন্টারফেস ইনজেক্ট করা হচ্ছে। ASP.NET Core এটি অটোমেটিক্যালি ইনজেক্ট করবে, কারণ এটি সার্ভিস রেজিস্টার করা হয়েছে ConfigureServices মেথডে।


সার্ভিস ইনজেকশনের ধাপ

  1. সার্ভিস রেজিস্টার করুন: প্রথমে ConfigureServices মেথডে সার্ভিস রেজিস্টার করতে হবে। সার্ভিসগুলোকে ট্রান্সিয়েন্ট, স্কোপড, অথবা সিঙ্গলটন হিসেবে কনফিগার করা হয়।
  2. কনট্রোলার বা ক্লাসে ইনজেক্ট করুন: এরপর সেই সার্ভিসটি কনস্ট্রাকটরের মাধ্যমে কনট্রোলার বা ক্লাসে ইনজেক্ট করা হয়।
  3. সার্ভিস ব্যবহার করুন: ইনজেক্ট করা সার্ভিসের মেথডগুলো ব্যবহার করা হয় প্রয়োজন অনুযায়ী।

Dependency Injection-এর সুবিধা

  • লোস কপ্লিং: DI কোডের মধ্যে কম্পোনেন্টগুলোর মধ্যে নির্ভরশীলতা কমায়, ফলে কোড সহজে রক্ষণাবেক্ষণযোগ্য হয়।
  • টেস্টেবিলিটি: DI সহজে ইউনিট টেস্টিংকে সমর্থন করে, কারণ আপনি মক (mock) বা ফেইক (fake) সার্ভিস ইনজেক্ট করতে পারেন।
  • স্কেলেবিলিটি: বিভিন্ন সার্ভিসের জন্য নির্দিষ্ট লাইফটাইম ব্যবহারের মাধ্যমে অ্যাপ্লিকেশনটি আরও স্কেলেবল হয়।
  • বেস্ট প্র্যাকটিস: সার্ভিস ইনজেকশন ব্যবহার করলে কোডকে আরও পরিষ্কার, এবং ভাল প্র্যাকটিস অনুসরণ করা হয়।

সার্ভিস ইনজেকশন এর উদাহরণ

ধরা যাক, আমাদের একটি সার্ভিস আছে যা ব্যবহারকারীর তথ্য রিট্রিভ করার জন্য ব্যবহৃত হয়।

  1. ইন্টারফেস তৈরি করা:
public interface IUserService
{
    User GetUser(int id);
}
  1. ইমপ্লিমেন্টেশন তৈরি করা:
public class UserService : IUserService
{
    public User GetUser(int id)
    {
        // এখানে ডেটাবেস বা অন্য কোনো সোর্স থেকে ডেটা রিটার্ন করা হবে
        return new User { Id = id, Name = "John Doe" };
    }
}
  1. সার্ভিস রেজিস্টার করা:
public void ConfigureServices(IServiceCollection services)
{
    services.AddScoped<IUserService, UserService>();
}
  1. কনট্রোলারে সার্ভিস ইনজেক্ট করা:
public class UserController : Controller
{
    private readonly IUserService _userService;

    public UserController(IUserService userService)
    {
        _userService = userService;
    }

    public IActionResult Index(int id)
    {
        var user = _userService.GetUser(id);
        return View(user);
    }
}

এখানে, IUserService ইন্টারফেসটি UserService ক্লাসের মাধ্যমে বাস্তবায়িত হয়েছে, এবং কনট্রোলারে ইনজেক্ট করা হয়েছে।


সারাংশ
Dependency Injection (DI) ASP.NET Core অ্যাপ্লিকেশনগুলিতে নির্ভরশীলতা ম্যানেজমেন্টের একটি শক্তিশালী টুল। এটি কোডের ক্লিনলিনেস, রক্ষণাবেক্ষণ সহজতা, এবং টেস্টিং সহজ করে তোলে। ASP.NET Core DI সিস্টেম স্বয়ংক্রিয়ভাবে সার্ভিস ইনজেকশন পরিচালনা করে, যা কোডে মডুলারিটি ও স্কেলেবিলিটি আনে।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion